Filter Class Result

= 70) { return array('grade' => 'A', 'remark' => 'Excellent', 'class' => 'grade-A'); } elseif ($score >= 60) { return array('grade' => 'B', 'remark' => 'Good', 'class' => 'grade-B'); } elseif ($score >= 55) { return array('grade' => 'C', 'remark' => 'Credit', 'class' => 'grade-C'); } elseif ($score >= 50) { return array('grade' => 'D', 'remark' => 'Pass', 'class' => 'grade-D'); } else { return array('grade' => 'F', 'remark' => 'Fail', 'class' => 'grade-F'); } } // Function to determine overall grade function getOverallGrade($average) { if ($average >= 70) return 'A'; elseif ($average >= 60) return 'B'; elseif ($average >= 55) return 'C'; elseif ($average >= 50) return 'D'; else return 'F'; } // Function to calculate student average based on class type function calculateStudentAverage($student_results, $klass) { $student_total = 0; $subject_count = count($student_results); // Calculate total score foreach($student_results as $row) { $student_total += ($row['test'] + $row['exam']); } // For SS 2 and SS 3 classes if (strpos($klass, 'SS 2') !== false || strpos($klass, 'SS 3') !== false) { // Use minimum of 9 subjects or actual number of subjects if more than 9 $base_subject_count = max(9, $subject_count); return $subject_count > 0 ? $student_total / $base_subject_count : 0; } // For other classes - use actual number of subjects written else { return $subject_count > 0 ? $student_total / $subject_count : 0; } } if(isset($_POST['filter'])) { $acyear = $_POST['acyear']; $term = $_POST['term']; $klass = $_POST['klass']; try { // Check if data exists $check_query = "SELECT COUNT(*) as count FROM marks WHERE acyear = ? AND term = ? AND klass = ?"; $check_stmt = $DBcon->prepare($check_query); $check_stmt->execute([$acyear, $term, $klass]); $check_result = $check_stmt->fetch(PDO::FETCH_ASSOC); if($check_result['count'] > 0) { // Get students with names $students_query = "SELECT DISTINCT m.regno, s.fullname FROM marks m LEFT JOIN students_info s ON m.regno = s.regno WHERE m.acyear = ? AND m.term = ? AND m.klass = ? ORDER BY s.fullname"; $students_stmt = $DBcon->prepare($students_query); $students_stmt->execute([$acyear, $term, $klass]); $students = $students_stmt->fetchAll(PDO::FETCH_ASSOC); // Get subjects $subjects_query = "SELECT DISTINCT subject FROM marks WHERE acyear = ? AND term = ? AND klass = ? ORDER BY subject"; $subjects_stmt = $DBcon->prepare($subjects_query); $subjects_stmt->execute([$acyear, $term, $klass]); $subjects = $subjects_stmt->fetchAll(PDO::FETCH_ASSOC); // Calculate student averages for positioning $student_averages = array(); $student_totals = array(); foreach($students as $student) { // Get all results for this student $student_results_query = "SELECT * FROM marks WHERE regno = ? AND acyear = ? AND term = ? AND klass = ?"; $student_results_stmt = $DBcon->prepare($student_results_query); $student_results_stmt->execute([$student['regno'], $acyear, $term, $klass]); $student_results = $student_results_stmt->fetchAll(PDO::FETCH_ASSOC); // Calculate average using the new function $student_average = calculateStudentAverage($student_results, $klass); $student_averages[$student['regno']] = $student_average; // Calculate total score $total_score = 0; foreach($student_results as $row) { $total_score += ($row['test'] + $row['exam']); } $student_totals[$student['regno']] = $total_score; } // Sort students by average (descending) arsort($student_averages); // Assign positions $positions = array(); $position = 1; foreach($student_averages as $regno => $average) { $positions[$regno] = $position++; } // Display results table if(count($students) > 0 && count($subjects) > 0) { echo '
'; echo '
'; echo '
'; echo '
'; echo '

CLASS RESULT - ' . $klass . ' - ' . $term . ' ' . $acyear . '

'; // Display average calculation info for SS classes if (strpos($klass, 'SS 2') !== false || strpos($klass, 'SS 3') !== false) { echo '
'; echo 'Note: For SS 2 and SS 3 classes, average is calculated using minimum of 9 subjects.'; echo '
'; } echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; foreach($subjects as $subject) { echo ''; } echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; foreach($subjects as $subject) { echo ''; } echo ''; echo ''; echo ''; echo ''; echo ''; // Display each student's results foreach($students as $student) { $position_class = ''; if ($positions[$student['regno']] == 1) $position_class = 'position-1'; elseif ($positions[$student['regno']] == 2) $position_class = 'position-2'; elseif ($positions[$student['regno']] == 3) $position_class = 'position-3'; echo ''; echo ''; echo ''; echo ''; $subject_count = 0; $total_score = 0; foreach($subjects as $subject) { $mark_query = $DBcon->prepare("SELECT test, exam FROM marks WHERE regno = ? AND subject = ? AND acyear = ? AND term = ? AND klass = ?"); $mark_query->execute([$student['regno'], $subject['subject'], $acyear, $term, $klass]); $mark = $mark_query->fetch(PDO::FETCH_ASSOC); if($mark) { $test = $mark['test']; $exam = $mark['exam']; $subject_total = $test + $exam; $total_score += $subject_total; $subject_count++; // Get grade for this subject $grade_info = getGrade($subject_total); echo ''; echo ''; echo ''; } else { echo ''; } } $average = $student_averages[$student['regno']]; $overall_grade = getOverallGrade($average); $overall_grade_info = getGrade($average); echo ''; echo ''; echo ''; echo ''; } echo '
PositionStudent NameReg No' . $subject['subject'] . 'Total ScoreAverageOverall Grade
TestExamTotal
' . $positions[$student['regno']] . '' . ($student['fullname'] ?: $student['regno']) . '' . $student['regno'] . '' . $test . '' . $exam . '' . $subject_total . '---' . number_format($total_score, 2) . '' . number_format($average, 2) . '' . $overall_grade . '
'; echo '
'; // table-responsive // Summary information echo '
'; echo '
'; echo '
'; echo '
'; echo '
Summary Information:
'; echo '

Total Students: ' . count($students) . '

'; echo '

Total Subjects: ' . count($subjects) . '

'; if (strpos($klass, 'SS 2') !== false || strpos($klass, 'SS 3') !== false) { echo '

Average Calculation: Based on minimum of 9 subjects

'; } else { echo '

Average Calculation: Based on actual subjects written

'; } echo '
'; echo '
'; echo '
'; echo '
'; echo '
Grading Legend:
'; echo 'A (70+)'; echo 'B (60-69)'; echo 'C (55-59)'; echo 'D (50-54)'; echo 'F (0-49)'; echo '
'; echo '
'; echo '
'; echo '
'; echo '
'; } } else { echo '
'; echo 'No Data Found
'; echo 'No records found for the selected criteria:
'; echo 'Academic Year: ' . $acyear . '
'; echo 'Term: ' . $term . '
'; echo 'Class: ' . $klass . '
'; echo '
'; } } catch(PDOException $e) { echo '
'; echo 'Database Error
'; echo 'Error: ' . $e->getMessage(); echo '
'; } } ?>